#ifndef DLPS_H__
#define DLPS_H__

#include <stdbool.h>
#include <stdint.h>



typedef struct
{
    void (*init)(void);
    void (*enter_dlps)(void); 
    void (*exit_dlps)(void);
    bool (*check_allow_dlps)(void);
    bool (*system_wakeup_check_allow_dlps)(void); 
    char *name;
} T_IO_MODULE_CBS; 

extern T_IO_MODULE_CBS    *driver_modules[];
extern uint8_t             m_hub_task_count;

extern volatile uint32_t dlps_flag; 

void xDLPS_Init(void); 

uint32_t xDLPS_register( const T_IO_MODULE_CBS* mod );

void xDLPS_enter(void);

void xDLPS_exit(void);

bool xDLPS_check(void);

void xDLPS_set(uint32_t flag);

void xDLPS_reset(uint32_t flag);

#endif 

